5.3时间戳格式化
1、通过格式化获取时间日期数据
当需要对时间戳做格式化设置时,可以使用srtftime()函数,该函数既可以对单个时间戳做格式化设置, 也可以对DatetimeIndex和Series中的时间戳做格式设置。
代码 | 注释 |
---|---|
%y | 表示两位数的年份(00-99) |
%Y | 表示两位数的年份(0000-9999) |
%m | 月份(01-12) |
%d | 月内中的天(01-31) |
%x | 获取日期的部份 |
%X | 获取时间的部份 |
%a | 简化日期名称 |
%A | 完整日期名称 |
%b | 简化月份名称 |
%B | 完整月份名称 |
%U | 一年中星期天数(00-53)星期天为星期的开始 |
%W | 一年中星期天数(00-53)星期一为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%j | 年内的某一天(0-365) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(0-59) |
%S | 秒(0-59) |
%P | 本地.A.M.或PM的等价符 |
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.格式时间戳.xlsx" )
print (df)
t1=df.考核日期.dt.strftime( "%Y" ) #dt为时间器
t2=df.考核日期.dt.strftime( "%d" )
print (t1)
print (t2)
返回:
姓名 | 考核日期 | 分数 | ||
---|---|---|---|---|
0 | 张三 | 2023-03-09 | 09:12:54 | 89 |
1 | 李四 | 2021-05-18 | 19:45:34 | 96 |
2 | 王麻子 | 2011-11-11 | 11:16:04 | 83 |
3 | 小曾 | 2024-01-12 | 23:32:55 | 99 |
0 | 2023 |
1 | 2021 |
2 | 2011 |
3 | 2024 |
Name: 考核日期, dtype: object
0 | 09 |
1 | 18 |
2 | 11 |
3 | 12 |
Name: 考核日期, dtype: object
2、通过属性获取时间日期数据
要提取单个时间戳、时间戳序列,时间戳访问器3种数据的相关信息和属性, 可能使用strftime()函数,通过格式化代码设置获得,也可以通过使用属性获取时间戳的相关信息。
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.格式时间戳.xlsx" )
print (pd.to_datetime( "2015-6-3 11:12:16" ).strftime( "%Y" )) #此种获得的数据是文件格式
print (pd.to_datetime( "2015-6-3 11:12:16" ).year) #此种获得的数据是标准的时间格式
df[ "日期1" ]=df.考核日期.map(lambda d:d.date())
df[ "日期2" ]=df.考核日期.dt.date
df[ "日期3" ]=pd.DatetimeIndex(df.考核日期).date # 通过先获得时间序列再获取日期,推荐使用此种方法
print (df)
2015
2015
姓名 | 考核日期 | 分数 | 日期1 | 日期2 | 日期3 | ||
---|---|---|---|---|---|---|---|
0 | 张三 | 2023-03-09 | 09:12:54 | 89 | 2023-03-09 | 2023-03-09 | 2023-03-09 |
1 | 李四 | 2021-05-18 | 19:45:34 | 96 | 2021-05-18 | 2021-05-18 | 2021-05-18 |
2 | 王麻子 | 2011-11-11 | 11:16:04 | 83 | 2011-11-11 | 2011-11-11 | 2011-11-11 |
3 | 小曾 | 2024-01-12 | 23:32:55 | 99 | 2024-01-12 | 2024-01-12 | 2024-01-12 |
dt | 访问属性 | 注释 |
---|---|---|
date | 获取日期部分 | |
time | 获取时间部分 | |
year | 获取年分 | |
quarter | 获取季度 | |
month | 获取月份 | |
day | 获取日 | |
hour | 获取小时 | |
mininute | 获取分钟 | |
isocalendar().week | 每年的第几周(只适用于时间戳访问器) | |
dayofweek | 星期1为0,星期日为6 | |
dayofyear | 一年中的第几天 | |
daysinmonth | 获取日期当月最后一天 | |
day_in_month | 获取日期当月最后一天 |